import { Toast, Dialog } from "vant";

export default class CPromise {
  /**
   * 页面初始化的时候，多个接口统一处理，用了此方法，在业务模块中不可以再使用toast组件
   * 一般不用在列表页，因为列表已经带正在加载的提示。
   * 如果列表页不分页，可以使用
   * @param {Array<Promise>} args 需要执行的方法，必须有返回值
   */
  public static all(args: any[]) {
    const toast = Toast.loading({
      message: "正在加载...",
      duration: 0
      // forbidClick: true
    });
    return Promise.all(args)
      .then((resArr: Api.Response[]) => {
        for (const item of resArr) {
          if ((item.code !== void 0 && item.code != "200") || (item.state !== void 0 && item.state != "200")) {
            Dialog.alert({
              message: item.msg
            });
            break;
          }
        }
      })
      .catch((err: ErrorEvent) => {
        console.log(11111111);
        console.log(err);
        console.log(11111111);
      })
      .finally(() => {
        setTimeout(() => {
          toast.clear();
        }, 200);
      });
  }
}
